package util.AST.Comando;

import java.util.ArrayList;

import checker.SemanticException;
import checker.Visitor;
import util.AST.Expressao.ExpressaoRel;

public class While extends ComandoSimples{
	
	private ExpressaoRel expressao;
	private ArrayList<Comando> comandos;
	
	
	public ExpressaoRel getExpressaoRel() {
		return expressao;
	}

	public void setExpressao(ExpressaoRel expressao) {
		this.expressao = expressao;
	}

	public ArrayList<Comando> getComandos() {
		return comandos;
	}

	public void setComandos(ArrayList<Comando> comandos) {
		this.comandos = comandos;
	}

	public While(ExpressaoRel expressao, ArrayList<Comando> comandos){
		this.expressao = expressao;
		this.comandos = comandos;
	}
	
	@Override
	public String toString(int level) {
		int nextLevel = level+5;
		StringBuffer string = new StringBuffer();
		string.append("while\n");
		if(this.expressao != null){
			string.append(super.getSpaces(nextLevel) + "|-" + this.expressao.toString(nextLevel));
		}
		if(this.comandos != null){
			for(Comando comando:this.comandos){
				string.append(comando.toString(nextLevel) + " ");
			}
		}
		return string.toString();
	}

	@Override
	public Object visit(Visitor v, Object o) throws SemanticException {
		return v.visitWhile(this, o);
	}

}
